Tout ce dont votre package a besoin

Joseph Barbier - PyCon2025

A propos


Freelance

Open source

Data(viz)

Questions



Qui a déjà créé un package Python ?


Qui a déjà mis sur PyPI un package Python ?


Qui contribue à des packages Python open source ?

Le bon package et le mauvais package

Un bon package c’est pas (uniquement) une question de code.

  • facile à comprendre ?
  • facile à utiliser ?
  • facile à développer ?

TLDR: package Python

def my_super_cool_function(arg):
    if arg == "cool":
        something = 123
    else:
        ...

    ...

    return something

Facilement distribuable et donc reutilisable !

Sommaire



Votre package a besoin de ces 4 choses, la dernière va vous surprendre 😱 !


  • Ne jamais commit une erreur

  • Tester dans les meilleures conditions

  • Configuration du pyproject.toml

  • Créer la meilleure documentation

Parlons style de code !

def add_nums(  A ,B):return A+B

def add_nums(  A ,B):return A+B

import numpy as np
def add_nums_numpy(  A ,B):
     return np.sum([A, B])

def add_nums(  A ,B):return A+B

import numpy as np
def add_nums_numpy(  A ,B):
     return np.sum([A, B])


def divideNums( A , B):
        return A/B
def multiply(a,b ):
 return  a *b

def add_nums(  A ,B):return A+B

import numpy as np
def add_nums_numpy(  A ,B):
     return np.sum([A, B])


def divideNums( A , B):
        return A/B
def multiply(a,b ):
 return  a *b

def main( ) :
    x= add_nums(2,  3)
#some comment
    y=multiply( x ,4 )                            # in the middle of the sea
    print( "sum:",x  )
    print("product:" ,  y)

import numpy as np


def add_nums(A, B):
    return A + B

def add_nums_numpy(A, B):
    return np.sum([A, B])

def divideNums(A, B):
    return A / B

def multiply(a, b):
    return a * b

def main():
    x = add_nums(2, 3)
    # some comment
    y = multiply(x, 4)  # in the middle of the sea
    print("sum:", x)
    print("product:", y)


ruff est probablement la meilleure option


2 manières d’utiliser :

  • “on save”
  • pre-commit
  • On va faire les deux !

Git


  • Git c’est Google Drive sous stéroïdes, mais pour des fichiers légers
  • comme des fichiers textes par exemple…
  • … et donc des fichiers de code!




  • Git c’est surtout l’historique, avec les commits
  • Mais on veut que l’historique soit propre !

pre-commit


A chaque commit, fait tourner une série de check qu’on aura définit

Certains sont bloquants –> fichier trop lourd –> il faut compresser ou supprimer

Certains peuvent être réparé automatiquement –> ruff –> cas d’usage principal

Tests

Tester son code ça veut dire quoi ?